const fs = require('fs');
const path = require('path');

// 诊断函数目录页面的导航问题
function diagnoseAndFixRouter() {
    console.log('=== 开始诊断和修复药物管理页面导航问题 ===');
    
    const functionDirPath = 'd:\\harmonyprojects\\disease\\entry\\src\\main\\ets\\pages\\FunctionDirectory.ets';
    const medicinePagePath = 'd:\\harmonyprojects\\disease\\entry\\src\\main\\ets\\features\\patient\\MedicineReminderPage.ets';
    
    // 检查药物管理页面是否存在
    if (fs.existsSync(medicinePagePath)) {
        console.log('✓ 药物管理页面文件存在');
    } else {
        console.log('✗ 错误: 药物管理页面文件不存在');
        return;
    }
    
    // 检查FunctionDirectory.ets是否存在
    if (fs.existsSync(functionDirPath)) {
        console.log('✓ 功能目录页面文件存在');
        
        // 读取文件内容
        const content = fs.readFileSync(functionDirPath, 'utf8');
        
        // 检查是否包含药物管理的路由配置
        const hasMedicationRoute = content.includes('route: \'features/patient/MedicineReminderPage\'');
        console.log(`✓ 药物管理路由配置: ${hasMedicationRoute ? '存在' : '不存在'}`);
        
        // 检查onClick事件处理
        const hasOnClickHandler = content.includes('onFunctionItemClick');
        console.log(`✓ 点击事件处理函数: ${hasOnClickHandler ? '存在' : '不存在'}`);
        
        // 生成修复版本 - 添加更详细的错误处理和日志
        const fixedContent = content.replace(
            '// 功能项点击处理\n  onFunctionItemClick(item: FunctionItem) {\n    try {\n      console.log(`准备跳转到 ${item.title} 页面，URL: ${item.route}`);\n      // 对于健康卡片，使用router.replace确保正确跳转\n      if (item.id === \'healthCards\') {\n        router.replace({\n          url: item.route\n        });\n      } else {\n        router.push({\n          url: item.route\n        });\n      }\n      console.log(`跳转到 ${item.title} 页面成功`);\n    } catch (error) {\n      console.log(`导航到 ${item.title} 失败: ${error}`);\n      promptAction.showToast({\n        message: `导航到 ${item.title} 失败`,\n        duration: 2000\n      });\n    }\n  }',
            '// 功能项点击处理\n  onFunctionItemClick(item: FunctionItem) {\n    try {\n      console.log(`[导航日志] 准备跳转到 ${item.title} 页面，URL: ${item.route}`);\n      \n      // 检查路由URL格式是否正确\n      if (!item.route) {\n        console.error(`[导航错误] 路由URL为空: ${item.title}`);\n        promptAction.showToast({\n          message: `路由配置错误: ${item.title}`,\n          duration: 2000\n        });\n        return;\n      }\n      \n      // 对于所有页面使用统一的跳转方式，确保一致性\n      try {\n        const result = router.push({
          url: item.route
        });\n        console.log(`[导航成功] 跳转到 ${item.title} 页面，URL: ${item.route}`);\n        \n        // 显示成功提示\n        promptAction.showToast({\n          message: `正在进入${item.title}...`,\n          duration: 1500\n        });\n      } catch (pushError) {\n        console.error(`[导航失败] router.push调用失败: ${pushError}`);\n        // 如果push失败，尝试replace作为备选方案\n        try {\n          console.log(`[备选方案] 尝试使用router.replace跳转到 ${item.title}`);\n          router.replace({\n            url: item.route\n          });\n          console.log(`[备选方案成功] 使用replace跳转到 ${item.title}`);\n        } catch (replaceError) {\n          console.error(`[导航失败] 所有跳转方式都失败了: ${replaceError}`);\n          promptAction.showToast({\n            message: `导航到 ${item.title} 失败，请检查应用配置`,\n            duration: 2000\n          });\n        }\n      }\n    } catch (error) {\n      console.error(`[导航错误] 处理点击事件时发生异常: ${error}`);\n      promptAction.showToast({\n        message: `操作失败，请重试`,\n        duration: 2000\n      });\n    }\n  }'
        );
        
        // 保存修复后的文件
        const backupPath = functionDirPath + '.bak';
        fs.copyFileSync(functionDirPath, backupPath);
        console.log(`✓ 已创建备份: ${backupPath}`);
        
        fs.writeFileSync(functionDirPath, fixedContent, 'utf8');
        console.log('✓ 已修复功能目录页面的点击事件处理逻辑');
        
        // 创建一个简单的测试页面，用于验证药物管理页面是否可以正常访问
        const testPagePath = 'd:\\harmonyprojects\\disease\\test-router.js';
        const testContent = `// 路由测试脚本
const pageExists = require('fs').existsSync('${medicinePagePath.replace(/\\/g, '\\\\')}');
console.log('药物管理页面是否存在:', pageExists);
console.log('预期路由路径:', 'features/patient/MedicineReminderPage');
`;
        fs.writeFileSync(testPagePath, testContent, 'utf8');
        console.log('✓ 已创建路由测试脚本');
        
        console.log('=== 诊断和修复完成 ===');
        console.log('1. 已增强功能目录页面的错误处理能力');
        console.log('2. 已添加详细的导航日志');
        console.log('3. 已实现备选导航方案，确保页面可以正常跳转');
        console.log('4. 点击药物管理时将显示更详细的状态提示');
    } else {
        console.log('✗ 错误: 功能目录页面文件不存在');
    }
}

// 执行诊断和修复
try {
    diagnoseAndFixRouter();
} catch (error) {
    console.error('执行诊断和修复时发生错误:', error);
}
